#ifndef __CLI_H__
#define __CLI_H__

/*********************************************************************
 * INCLUDES
 */

#ifdef __cplusplus
extern "C" {
#endif

/*********************************************************************
 *  EXTERNAL VARIABLES
 */

/*********************************************************************
 * MACROS
 */

/*********************************************************************
 * TYPES
 */

typedef struct _cmd_line
{
    const char *acName;
    const char *acHelp;
    void (*pfCmdlineCallBack)(char *pArg);
} CLI_INFO_S;

/*********************************************************************
 * FUNCTIONS
 */

/**
 *   @Description: Shell初始化
 *   @param : NA
 *   @return: NA
 */
void CLI_Install(void);

/**
 *   @Description: CLI卸载
 *   @param : NA
 *   @return: NA
 */
void CLI_Uninstall(void);

/**
 *   @Description: 命令行注册
 *   @param : pstCmdLine - 入参，命令行相关参数
 *   @param : uiNum - 入参，注册的命令行个数
 *   @return: NA
 */
int32_t CLI_Register(CLI_INFO_S *pstCLI, uint32_t uiCliNum);

/**
 *   @Description: 获取命令行关键字
 *   @param : pArg - 入参，命令行参数指令地址
 *   @param : pCurParam - 出参，命令行获取到的关键字
 *   @return: 命令行下一个参数指令地址
 */
char *CLI_KeyNext(char *pArg, char *pKey);

/**
 *   @Description: 命令行输出函数
 *   @param : pArg - 入参，命令行参数指令地址
 *   @return: NA
 */
void CLI_Output(const char *pcFmt, ...);

/**
 *   @Description: 结束本次命令行通信
 *   @param : NA
 *   @return: NA
 */
void CLI_Exit(void);

#ifdef __cplusplus
}
#endif /* end of __cplusplus */

#endif

/************************************** The End Of File **************************************/



